/*
 *
 * パレットフェードイン、フェードアウト
 * 
 * mode { 0 : フェードアウト、1 : フェードイン }
 * start : 先頭パレット番号
 *   end : 後尾パレット番号
 *
 */
void
PaletteFadeBlack(int mode,int start, int end)
	{
	int	i,j;

	if ( mode )
		{
		// フェードイン
		for ( i = 0 ; i < FADERATE + 1 ; i++ )
			{
			for ( j = start ; j < end+1 ; j++ )
				{
				MakePaletteDataBlack(i,j);
				}
			VSyncWait();
			write_pallet_datas(start, workdat, (end-start)+1 );
			}
		}
	else
		{
		// フェードアウト
		for ( i = FADERATE ; i >= 0 ; i-- )
			{
			for ( j = start ; j < end+1 ; j++ )
				{
				MakePaletteDataBlack(i,j);
				}
			VSyncWait();
			write_pallet_datas(start, workdat, (end-start)+1 );
			}
		}
	}

/*
 * パレットデータ作成
 */
void
MakePaletteDataBlack(int i, int j)
	{
	int	a,b,c,p;

	a = (i5c4yuv_col[j] & 0xff00) * i / FADERATE;
	a &= 0xff00;
	p = i5c4yuv_col[j] & 0x00f0;
	if ( p > 0x0080 )
		{
		b = 0x0080 + (p - 0x0080) * i / FADERATE;
		}
	else
		{
		b = 0x0080 - (0x0080 - p) * i / FADERATE;
		}
	b &= 0x00f0;
	c = (0x0008 - (i5c4yuv_col[j] & 0xfff0)) * i / FADERATE;
	p = i5c4yuv_col[j] & 0x000f;
	if ( p > 0x0008 )
		{
		c = 0x0008 + (p - 0x0008) * i / FADERATE;
		}
	else
		{
		c = 0x0008 - (0x0008 - p) * i / FADERATE;
		}
	c &= 0x000f;
	workdat[j] = a | b | c;
	}

